<html>
<head><meta charset="utf-8"><title>Rustc lazy norm · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html">Rustc lazy norm</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="203046931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/203046931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#203046931">(Jul 06 2020 at 22:12)</a>:</h4>
<p>So, after <a href="https://github.com/rust-lang/rust/issues/73905">#73905</a> I was so frustrated about all of the <code>normalize</code> calls that I was forced to write that I did this: <a href="https://github.com/rust-lang/rust/commit/15731f0405c47f7de824290568622b7bcc1627a5">https://github.com/rust-lang/rust/commit/15731f0405c47f7de824290568622b7bcc1627a5</a></p>
<ul>
<li>Some tests are failing, a lot of them due to breaking suggestions</li>
<li>Most of the normalize calls that should be removable now haven't been removed (<code>normalize_param_env_or_error</code> is gone though).</li>
<li>There's still a lot of ways in which it's subtly broken</li>
</ul>



<a name="203086541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/203086541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#203086541">(Jul 07 2020 at 10:23)</a>:</h4>
<p><span class="user-mention" data-user-id="116118">@Matthew Jasper</span> I've been pondering such an experimenting. Are you planning to keep pushing on this branch at all?</p>



<a name="203087103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/203087103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#203087103">(Jul 07 2020 at 10:33)</a>:</h4>
<p>I'll keep going until I'm out of obvious (to me) things to fix.</p>



<a name="203200510"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/203200510" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#203200510">(Jul 07 2020 at 20:44)</a>:</h4>
<p>current state: wondering what to do about these gems: <a href="https://github.com/rust-lang/rust/blob/15731f0405c47f7de824290568622b7bcc1627a5/src/librustc_infer/infer/mod.rs#L906-L930">https://github.com/rust-lang/rust/blob/15731f0405c47f7de824290568622b7bcc1627a5/src/librustc_infer/infer/mod.rs#L906-L930</a></p>



<a name="204256668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/204256668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#204256668">(Jul 17 2020 at 20:43)</a>:</h4>
<p>fun</p>



<a name="204256684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/204256684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#204256684">(Jul 17 2020 at 20:43)</a>:</h4>
<p>I guess the real question is where they are used from, <span class="user-mention" data-user-id="116118">@Matthew Jasper</span></p>



<a name="204258972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/204258972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#204258972">(Jul 17 2020 at 21:05)</a>:</h4>
<p>Fortunately, mostly error reporting code.</p>



<a name="204264720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/204264720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#204264720">(Jul 17 2020 at 22:01)</a>:</h4>
<p>And there's a write-up: <a href="https://gist.github.com/matthewjasper/358245b033a1b7bd158acfe0c08d0d09">https://gist.github.com/matthewjasper/358245b033a1b7bd158acfe0c08d0d09</a></p>



<a name="212978022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212978022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212978022">(Oct 11 2020 at 19:23)</a>:</h4>
<p>It looks like not having lazy normalization in rustc is causing problems with <code>-Zchalk</code>, even for simple programs like <code>fn f() { 1i32 + 2i32; }</code>.</p>



<a name="212978144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212978144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212978144">(Oct 11 2020 at 19:26)</a>:</h4>
<p>I'm wondering what approach we want to take here. Experiment behind a feature flag? Pass relating types to Chalk?</p>



<a name="212981622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212981622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212981622">(Oct 11 2020 at 21:04)</a>:</h4>
<p>Oh interesting</p>



<a name="212981627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212981627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212981627">(Oct 11 2020 at 21:05)</a>:</h4>
<p>Is this with your branch?</p>



<a name="212981631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212981631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212981631">(Oct 11 2020 at 21:05)</a>:</h4>
<p>I might be able to take a look at it</p>



<a name="212981745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212981745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212981745">(Oct 11 2020 at 21:08)</a>:</h4>
<p><code>fn f() { 1i32 + 2i32; }</code> doesn't compile on master. I could try rebasing the lazy-norm branch and seeing how things go.</p>



<a name="212981756"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212981756" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212981756">(Oct 11 2020 at 21:08)</a>:</h4>
<p>Oh...wow. that's suprising</p>



<a name="212982770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212982770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212982770">(Oct 11 2020 at 21:36)</a>:</h4>
<p>actually, I'm not so sure that this is a lazy normalization issue.</p>



<a name="212986165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212986165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212986165">(Oct 11 2020 at 23:13)</a>:</h4>
<p>I don't think it is</p>



<a name="212986203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/212986203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#212986203">(Oct 11 2020 at 23:14)</a>:</h4>
<p>Its probably the chalk bug related the wf function args</p>



<a name="213008602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213008602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213008602">(Oct 12 2020 at 08:06)</a>:</h4>
<p>No, it's missing functionality in the rustc <code>RustIrDatabase</code> implementation.</p>



<a name="213082031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213082031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213082031">(Oct 12 2020 at 20:20)</a>:</h4>
<p>Chalk also has a bug here:<br>
given</p>
<div class="codehilite"><pre><span></span><code>        program {
            #[non_enumerable]
            trait Add&lt;Rhs&gt; { type Output; }

            impl&lt;&#39;a&gt; Add&lt;&amp;&#39;a u32&gt; for u32 { type Output = &lt;u32 as Add&lt;u32&gt;&gt;::Output; }
            impl Add&lt;u32&gt; for u32 { type Output = u32; }
        }
</code></pre></div>


<p>the slg solver gives the following:</p>
<div class="codehilite"><pre><span></span><code>goal { exists &lt; int T, U, V &gt; { &lt; T as Add &lt; U &gt;&gt; :: Output = V } }
Ambiguous; definite substitution for&lt;?U0,?U0&gt; { [?0 := ^0.0, ?1 := ^0.1, ?2 := (Add::Output)&lt;^0.0, ^0.1&gt;] }
</code></pre></div>


<p>swapping the order of the impls results in the correct output <code>Ambiguous; no inference guidance</code></p>



<a name="213082758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213082758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213082758">(Oct 12 2020 at 20:29)</a>:</h4>
<p>I wonder if this is <a href="https://github.com/rust-lang-nursery/chalk/issues/234">chalk#234</a></p>



<a name="213083658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213083658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213083658">(Oct 12 2020 at 20:33)</a>:</h4>
<p>I don't think so, this is an issue where things are not reported as being ambiguous enough, not the other way around. Looking through the logs the handling of multiple answers seems to be broken.</p>



<a name="213083827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213083827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213083827">(Oct 12 2020 at 20:35)</a>:</h4>
<p>Ugh not good</p>



<a name="213083932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213083932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213083932">(Oct 12 2020 at 20:36)</a>:</h4>
<p>This doesn't look right: <a href="https://github.com/rust-lang/chalk/blob/0cdc6c78f0d637f57f7816946fb9f6a99e3f72e5/chalk-engine/src/logic.rs#L117">https://github.com/rust-lang/chalk/blob/0cdc6c78f0d637f57f7816946fb9f6a99e3f72e5/chalk-engine/src/logic.rs#L117</a></p>



<a name="213084058"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084058" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084058">(Oct 12 2020 at 20:37)</a>:</h4>
<p>What about it?</p>



<a name="213084343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084343">(Oct 12 2020 at 20:40)</a>:</h4>
<p>If the <code>self.tables[table].answer(answer)</code> is <code>Some </code>then it only checks one answer, otherwise it checks all of them.</p>



<a name="213084402"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084402" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084402">(Oct 12 2020 at 20:41)</a>:</h4>
<p>Well yes</p>



<a name="213084435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084435">(Oct 12 2020 at 20:41)</a>:</h4>
<p>So, it either checks the actual answer, or the strands that could make answers</p>



<a name="213084821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084821">(Oct 12 2020 at 20:46)</a>:</h4>
<p><code>self.tables[table].answer(answer)</code> is the answer with the given index, not the unambiguous answer.</p>



<a name="213084900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213084900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213084900">(Oct 12 2020 at 20:47)</a>:</h4>
<p>Hmm</p>



<a name="213085034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085034">(Oct 12 2020 at 20:49)</a>:</h4>
<p>I think the problem is <code>may_invalidate</code> though</p>



<a name="213085036"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085036" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085036">(Oct 12 2020 at 20:49)</a>:</h4>
<p>hmm</p>



<a name="213085146"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085146" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085146">(Oct 12 2020 at 20:50)</a>:</h4>
<p>actually</p>



<a name="213085153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085153">(Oct 12 2020 at 20:50)</a>:</h4>
<p>I guess it's weird that we pass an AnswerIndex to that</p>



<a name="213085159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085159">(Oct 12 2020 at 20:50)</a>:</h4>
<p>This definitely fixes the problem:</p>
<div class="codehilite" data-code-language="Diff"><pre><span></span><code><span class="gu">@@ -122,7 +122,9 @@ impl&lt;I: Interner&gt; Forest&lt;I&gt; {</span>
     ) -&gt; bool {
         if let Some(answer) = self.tables[table].answer(answer) {
             info!("answer cached = {:?}", answer);
<span class="gd">-            return test(&amp;answer.subst.value.subst);</span>
<span class="gi">+            if test(&amp;answer.subst.value.subst) {</span>
<span class="gi">+                return true;</span>
<span class="gi">+            }</span>
         }

         self.tables[table]
</code></pre></div>



<a name="213085176"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085176" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085176">(Oct 12 2020 at 20:50)</a>:</h4>
<p>Yeah, that makes sense</p>



<a name="213085188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085188">(Oct 12 2020 at 20:51)</a>:</h4>
<p>Took me a second</p>



<a name="213085190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085190">(Oct 12 2020 at 20:51)</a>:</h4>
<p>I have to read a bit more context I guess, that code is pretty out of cache to me, but I agree with <span class="user-mention" data-user-id="116118">@Matthew Jasper</span> that returning is suspicious there</p>



<a name="213085192"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085192" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085192">(Oct 12 2020 at 20:51)</a>:</h4>
<p>It is weird, because it's effectively <code>last</code></p>



<a name="213085233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085233">(Oct 12 2020 at 20:51)</a>:</h4>
<p>but it <em>is</em> a bit odd that it takes an <code>answer_index</code> in the first place</p>



<a name="213085271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085271">(Oct 12 2020 at 20:52)</a>:</h4>
<p>I actually would probably expect that to only check strands...</p>



<a name="213085403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085403">(Oct 12 2020 at 20:53)</a>:</h4>
<p>Well, the answer index is passed by <code>AnswerStream</code></p>



<a name="213085500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085500">(Oct 12 2020 at 20:54)</a>:</h4>
<p>I think that the point is that it's trying to handle the case when it's called after <code>peek_answer</code> or <code>next_answer</code></p>



<a name="213085690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085690">(Oct 12 2020 at 20:56)</a>:</h4>
<p>Yeah, after <code>peek_answer</code></p>



<a name="213085913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085913">(Oct 12 2020 at 20:59)</a>:</h4>
<p>it seems wrong to me</p>



<a name="213085928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085928">(Oct 12 2020 at 20:59)</a>:</h4>
<p>I feel like <code>any_future_answer</code> ought to look not only at the <code>self.answer</code> from <code>AnswerStream</code> but <em>other</em> cached answers too</p>



<a name="213085953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085953">(Oct 12 2020 at 20:59)</a>:</h4>
<p>This has the feel of an O(n^2) behavior though</p>



<a name="213085958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213085958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213085958">(Oct 12 2020 at 20:59)</a>:</h4>
<p>so I'm a bit wary</p>



<a name="213086022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086022">(Oct 12 2020 at 21:00)</a>:</h4>
<p>but if <code>AnswerStream</code> is replaying some cached set of answers, then I think it's totally relevant</p>



<a name="213086039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086039">(Oct 12 2020 at 21:00)</a>:</h4>
<p>i.e., imagine you have answers 1, 2, 3, and some incomplete strands</p>



<a name="213086054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086054">(Oct 12 2020 at 21:00)</a>:</h4>
<p>and you have <code>AnswerIndex</code> with <code>self.answer</code> pointing at answer 1</p>



<a name="213086091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086091">(Oct 12 2020 at 21:00)</a>:</h4>
<p>it seems like you have to test answers 2 and 3, since those are what <code>next</code> would be returning -- the strands only become relevant after answer 3</p>



<a name="213086207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086207">(Oct 12 2020 at 21:02)</a>:</h4>
<p>That...is also true</p>



<a name="213086237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086237">(Oct 12 2020 at 21:02)</a>:</h4>
<p>I guess that hasn't come up because we only use that on a new root</p>



<a name="213086238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086238">(Oct 12 2020 at 21:02)</a>:</h4>
<p>I think that <code>AnswerStream</code> is supposed to ensure that <code>self.answer</code> is always either the last known answer or one past the last known answer.</p>



<a name="213086294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086294">(Oct 12 2020 at 21:03)</a>:</h4>
<p>For solving for root answers, yes</p>



<a name="213086302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086302">(Oct 12 2020 at 21:03)</a>:</h4>
<p>wait uh</p>



<a name="213086445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086445">(Oct 12 2020 at 21:05)</a>:</h4>
<p>Well, we can answer "replay" the cached answers for a table through an answer stream</p>



<a name="213086489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086489">(Oct 12 2020 at 21:05)</a>:</h4>
<p>hmm...</p>



<a name="213086491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086491">(Oct 12 2020 at 21:05)</a>:</h4>
<p>If you mean the assert <a href="https://github.com/rust-lang/chalk/blob/0cdc6c78f0d637f57f7816946fb9f6a99e3f72e5/chalk-engine/src/logic.rs#L462">here</a></p>



<a name="213086506"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086506" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086506">(Oct 12 2020 at 21:05)</a>:</h4>
<p>then that essentially asserting we can't <em>skip</em> answers</p>



<a name="213086520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086520">(Oct 12 2020 at 21:06)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116118">Matthew Jasper</span> <a href="#narrow/stream/144729-wg-traits/topic/Rustc.20lazy.20norm/near/213086238">said</a>:</p>
<blockquote>
<p>I think that <code>AnswerStream</code> is supposed to ensure that <code>self.answer</code> is always either the last known answer or one past the last known answer.</p>
</blockquote>
<p>I was wondering if that was the case</p>



<a name="213086588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086588">(Oct 12 2020 at 21:06)</a>:</h4>
<p>I see. So the code should actually looks something like this:</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="w">        </span><span class="k">while</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">(</span><span class="n">answer</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="bp">self</span><span class="p">.</span><span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">].</span><span class="n">answer</span><span class="p">(</span><span class="n">answer</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="n">info</span><span class="o">!</span><span class="p">(</span><span class="s">"answer cached = {:?}"</span><span class="p">,</span><span class="w"> </span><span class="n">answer</span><span class="p">);</span><span class="w"></span>
<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="n">test</span><span class="p">(</span><span class="o">&amp;</span><span class="n">answer</span><span class="p">.</span><span class="n">subst</span><span class="p">.</span><span class="n">value</span><span class="p">.</span><span class="n">subst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
<span class="w">            </span><span class="n">answer</span><span class="p">.</span><span class="n">increment</span><span class="p">();</span><span class="w"></span>
<span class="w">        </span><span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="213086652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086652">(Oct 12 2020 at 21:07)</a>:</h4>
<p>and then check the strands, yes</p>



<a name="213086959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086959">(Oct 12 2020 at 21:10)</a>:</h4>
<p>that is more obviosuly correct to me</p>



<a name="213086980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086980">(Oct 12 2020 at 21:11)</a>:</h4>
<p>maybe it's equivalent because of some invariant</p>



<a name="213086985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213086985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213086985">(Oct 12 2020 at 21:11)</a>:</h4>
<p>but if not, the old code looks wrong to me</p>



<a name="213087001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213087001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213087001">(Oct 12 2020 at 21:11)</a>:</h4>
<p>the old code is definitely wrong</p>



<a name="213087026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213087026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213087026">(Oct 12 2020 at 21:12)</a>:</h4>
<p>I've had my suspicion that there's been something weird with this code for a while</p>



<a name="213087102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213087102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213087102">(Oct 12 2020 at 21:12)</a>:</h4>
<p>There was an issue reported a bit ago that I brought it up, but it got "fixed" by the ambiguous handling change, so I kind of forgot about this</p>



<a name="213088736"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/213088736" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#213088736">(Oct 12 2020 at 21:35)</a>:</h4>
<p><a href="https://github.com/rust-lang/chalk/pull/626">https://github.com/rust-lang/chalk/pull/626</a></p>



<a name="229768178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/229768178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#229768178">(Mar 10 2021 at 23:48)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116118">Matthew Jasper</span> <a href="#narrow/stream/144729-wg-traits/topic/Rustc.20lazy.20norm/near/204264720">said</a>:</p>
<blockquote>
<p>And there's a write-up: <a href="https://gist.github.com/matthewjasper/358245b033a1b7bd158acfe0c08d0d09">https://gist.github.com/matthewjasper/358245b033a1b7bd158acfe0c08d0d09</a></p>
</blockquote>
<p>These are the notes I made when I last looked at last norm. I'll try to have another look before the next meeting.</p>



<a name="230009325"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/Rustc%20lazy%20norm/near/230009325" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/Rustc.20lazy.20norm.html#230009325">(Mar 12 2021 at 10:52)</a>:</h4>
<p>Thanks!</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>